# 通过{}括起来，元素以key: value(键值对)的方式来表示，元素与元素之间通过, 隔开
"""
key必须是唯一的，value可以不唯一
key必须是不可变数据类型, 比如key可以为number/string
"""

dic = {
    1: "value1",
    "name": "muzhou",
    "age": 18,
    "lst": [1, 2, 3, 4],
}

# 获取字典中元素
# print(dic["age"])
# print(dic.get("age123", 123))  # 尝试获取某个key的值, 如果key不存在,则返回设置的默认值

# 修改字典某个key的值
# 原则: 有则修改, 无则新增
# dic["age"] = 20
# dic["age123"] = 20
# update
# dic.update({"age": 20, "name": "木舟", "age123": 19})

# 删除
# del dic[1]

# print(dic)


# 常见函数
# keys 将字典中的所有key生成一个类似于数组的值
print(dic.keys())

# values 获取字典所有的values, 生成一个类似于数组的值
print(dic.values())

# items, 将字典中的key和value都取出来,存入到一个元组中, 最后生成一个列表
print(dic.items())

"""
info = {'a':1, 'b':2}
print(len(info))    # 获取字典长度
# info.update(dict2)  # dict2的数据更新到字典中
print(info.values())    # 获取字典所有的value
info.popitem()  # 删除字典中最后的一对键值对
print(info.pop('hhh', '查不到'))   # 根据给定的key进行删除
print(info.keys())  # keys列出所有键
print(info.items()) # 同时获取key,value的值  
print(info.get('age'))  # 取出指定键的值，没有的元素不会抛异常
print({}.fromkeys('name', 100)) # 创建字典
a = info.setdefault('sex', 'M') # 类似get方法，获取元素的值，但是当key不存在，则添加key并，默认为None，否则取默认值
print(a)
b = info.setdefault('sex', 'F')
print(b)
print(info.copy())  # 复制字典，浅copy
info.clear() # 清空内容
print(info)
"""